package com.zp.self.module.level_4_算法练习.数据结构.String;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author By ZengPeng
 */
public class 力扣_824_山羊拉丁文 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_824_山羊拉丁文().new Solution();
        System.out.println(solution);
    }

    /**
     题目：给你一个由若干单词组成的句子 sentence ，单词间由空格分隔。每个单词仅由大写和小写英文字母组成。
     请你将句子转换为 “山羊拉丁文（Goat Latin）”（一种类似于 猪拉丁文 - Pig Latin 的虚构语言）。山羊拉丁文的规则如下：
         如果单词以元音开头（'a', 'e', 'i', 'o', 'u'），在单词后添加"ma"。
            例如，单词 "apple" 变为 "applema" 。
         如果单词以辅音字母开头（即，非元音字母），移除第一个字符并将它放到末尾，之后再添加"ma"。
            例如，单词 "goat" 变为 "oatgma" 。
         根据单词在句子中的索引，在单词最后添加与索引相同数量的字母'a'，索引从 1 开始。
            例如，在第一个单词后添加 "a" ，在第二个单词后添加 "aa" ，以此类推。
         返回将 sentence 转换为山羊拉丁文后的句子。

     示例 1：
     输入：sentence = "I speak Goat Latin"
     输出："Imaa peaksmaaa oatGmaaaa atinLmaaaaa"

     示例 2：
     输入：sentence = "The quick brown fox jumped over the lazy dog"
     输出："heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"

     分析：【P 💔💔】
        1.遍历+转换：分隔得到单词，sb 一个个的拼接。
                    后缀变量houzui = 多少个maa
                    是否将第一个加到末尾
            --执行耗时:1 ms,击败了99.80% 的Java用户
            --编码耗时:22:57

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String toGoatLatin(String sentence) {
        List<Character>  yuanying = new ArrayList<>(Arrays.asList('a', 'e', 'i', 'o', 'u','A', 'E', 'I', 'O', 'U'));
        StringBuilder res = new StringBuilder();
        StringBuilder houzui  =new StringBuilder("maa");
        char[] chars = sentence.toCharArray();
        int start=0,end=0,len=chars.length;
        for (int i = 0; i <= len; i++) {
            if(len==end || chars[i]==' '){
                if(yuanying.contains(chars[start])){
                    res.append(chars,start,end-start);
                }else {
                    res.append(chars,start+1,end-start-1);
                    res.append(chars[start]);
                }
                res.append(houzui).append(' ');
                houzui.append('a');
                start=end+1;
            }
            end++;
        }
        return res.substring(0,res.length()-1);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}